
SDCC ?= sdcc
SDCCREV ?= -Dstc15w408as
STCGAL ?= stcgal/stcgal.py
STCGALOPTS ?= 
STCGALPORT ?= COM7
STCGALPROT ?= auto
FLASHFILE ?= build/output.hex
SYSCLK ?= 35000
#指定sdcc编译器路径（注：请改为自己的路径）
sdcc  := sdcc.exe
packihx := packihx.exe

#指定.c文件（注：请将工程中所有的.c文件添加进来）
SRCS = \
src/main.c \
src/rgb.c 
#指定.h文件（注：请将工程中所有.h文件所在的文件夹添加进来）
INCS = \
-Ilib
#指定输出hex文件的路径与文件名
outdir = build
outname = output

all:clean $(outdir)/$(outname).hex flash

#将所有的.c->.rel，存入OBJECT
OBJECTS = $(addprefix $(outdir)/,$(notdir $(SRCS:.c=.rel)))
vpath %.c $(sort $(dir $(SRCS)))

#（注：请对照自己的芯片调整以下几条语句的--iram-size、--xram-size参数）
$(outdir)/%.rel: %.c Makefile | $(outdir)
	$(sdcc) --code-size 8192 --iram-size 256 --xram-size 256 --stack-auto -c $(INCS) $< -o $@

$(outdir)/$(outname).ihx: $(OBJECTS)
	$(sdcc) --code-size 8192 --iram-size 256 --xram-size 256 --stack-auto $^ -o $(outdir)/$(outname).ihx
	@ tail -n 5 $(outdir)/$(outname).mem | head -n 2
	@ tail -n 1 $(outdir)/$(outname).mem \
	
	

$(outdir)/%.hex: $(outdir)/%.ihx | $(outdir)
	$(packihx) $< $@ > $(outdir)/$(outname).hex

#调用stcflash进行烧录（注：请对照自己的设备修改COM口）
flash:
		$(STCGAL) -p $(STCGALPORT) -P $(STCGALPROT) -t $(SYSCLK) $(STCGALOPTS) $(FLASHFILE)

#定义清除操作
.PHONY : clean
#######################################
# clean up
#######################################
clean:
	-rm -fR $(outdir)/*.* /q
#######################################
# dependencies
#######################################
-include $(wildcard $(outdir)/*.d)

# *** EOF ***